.. _cmmGnInitFromFile_MapOnly: cmmGnInitFromFile_MapOnly ========================== -------------------------- SYSNOPSYS ``````````` .. code-block:: none VT_I4cmmGnInitFromFile_MapOnly ( [in] VT_STR szCmeFile, [in] VT_I4 nMapType ) DESCRIPTION ````````````` - 커미조아 환경 설정 파일(.CME2) 을 통해 설정된 값으로 모션 제어기 및 디지털 입출력 장치의 각종 환경 중 모션 또는 범용 디지털 입출력 채널에 대한 맵핑 정보만을 자동으로 설정합니다. PARAMETER ``````````` - szCmeFile : CME2 파일의 절대 경로 혹은 파일의 상대 경로를 지정합니다. - nMapType : 모션 혹은 범용 디지털 입출력 채널 맵핑 정보 중 하나 또는 두 가지 모두의 Mapping 형식을 선택합니다. +----------------------+------------------------------------------------+ | Value | Meaning | +======================+================================================+ | cmDMAP_MOTION 또는 0 | 모션 축에 대한 맵핑 정보 | +----------------------+------------------------------------------------+ | cmDMAP_DIO 또는 1 | 범용 디지털 입출력 채널에 대한 맵핑 정보 | +----------------------+------------------------------------------------+ | cmDMAP_ALL 또는 2 | 모션 및 범용 디지털 입출력 채널에 대한 맵핑 정보 | +----------------------+------------------------------------------------+ RETURN VALUE ````````````` +--------------+----------------+ | Value | Meaning | +==============+================+ | 음수 | 수행 실패 | +--------------+----------------+ | cmERR_NONE | 수행 성공 | +--------------+----------------+ REFERENCE ``````````` - 이 함수는 cmmGnInitFromFile 처럼 모션 환경 설정에 대한 모든 정보를 가져오지 않고 모션 또는 I/O 채널 맵핑 정보에 대해서만 로드 하는 것에 유의 하십시오. EXAMPLE ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ void InitMotionDevices() { //////////////////////////////////////////////////////////////////////////////////////// // [CAUTION]: 아래와 다른 CME 파일을 사용하는 경우에는 아래 코드를 수정하여 올바른 CME 파일의 // 경로를 지정하십시오. #define CME_FILE_NAME "Default.cme2" char szCmeFilePath[MAX_PATH], szSystemDir[MAX_PATH]; /* 윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32) */ GetSystemDirectory(szSystemDir, MAX_PATH); sprintf(szCmeFilePath, "%s\\%s", szSystemDir, CME_FILE_NAME); if(cmmGnInitFromFile_MapOnly(szCmeFilePath, cmDMAP_ALL) != cmERR_NONE){ cmmErrShowLast(NULL); // 에러 발생하였으면 에러 디스플레이. } else{ ////////////////////////////////////////////////////////////////////////////////// // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는 // 아래와 같이 하면 됩니다. long nNumAxes_installed, nNumAxes_defined; cmmAdvGetNumAvailAxes(&nNumAxes_installed); // 현재 실제로 PC 에 장착되어 있는 // 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일) cmmAdvGetNumDefinedAxes(&nNumAxes_defined); // CME 파일에서 정의한 축 수 //(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.) if(nNumAxes_installed != nNumAxes_defined){ MessageBox(NULL, "현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다", "Warning", MB_OK | MB_ICONWARNING); } } // SERVO-ON // long nNumAxes; cmmAdvGetNumDefinedAxes(&nNumAxes); for(int i=0; i cmERR_NONE Then Call cmmErrShowLast(Null) Else ' ************************************************************************************************ ' CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인 (確認)하고자 할 때는 ' 아래와 같이 하면 됩니다. ' ************************************************************************************************ Call cmmAdvGetNumAvailAxes(nNumAxes_installed) Call cmmAdvGetNumfinedAxes(nNumAxes_defined) If nNumAxes_installed <> nNumAxes_defined Then MsgBox ("현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다") End If End If ' SERVO-ON Call cmmAdvGetNumDefinedAxes(nNumAxes) For i = 0 To nNumAxes Call cmmGnSetServoOn(i, cmTRUE) Next End Sub -------------------------------------------------------------------------------------------------------------------- Delphi Const CME_FILE_NAME = 'Default.cme2'; Const MAX_PATH = 100; procedure InitMotionDevices(); var szCmeFilePath : Array[0..MAX_PATH] of Char; szSystemDir : Array[0..MAX_PATH] of Char; nNumAxes_installed: LongInt; nNumAxes_defined: LongInt; nNumAxes : LongInt; i : LongInt; begin //윈도우즈 시스템 디렉토리명 얻어오기 (일반적으로는 C:\Windows\System32) GetSystemDirectory(@szSystemDir, MAX_PATH); Format('%s\\%s',[ szSystemDir, CME_FILE_NAME]); if(cmmGnInitFromFile_MapOnly(@szCmeFilePath, cmDMAP_ALL) <> cmERR_NONE) then begin cmmErrShowLast(0); // 에러 발생하였으면 에러 디스플레이. end else begin ////////////////////////////////////////////////////////////////////////////////// // CME 파일에서 정의한 축수와 실제 장착되어 있는 모션 축수를 비교확인(確認) 하고자 할 때는 // 아래와 같이 하면 됩니다. cmmAdvGetNumAvailAxes(@nNumAxes_installed); // 현재 실제로 PC 에 장착되어 있는 모션축 수 (cmmGnDeviceLoad() 함수에서 반환하는 축수와 동일) cmmAdvGetNumDefinedAxes(@nNumAxes_defined); // CME 파일에서 정의한 축 수(CME 파일이 지정되지 않는 경우에는 현재 장착된 축 수와 일치합니다.) if(nNumAxes_installed <> nNumAxes_defined) then begin Writeln('현재 장착되어 있는 모션 축 수가 정의된 축 수와 일치하지 않습니다'); end; end; // SERVO-ON // cmmAdvGetNumDefinedAxes(@nNumAxes); //i := 0; For i := 0 to nNumAxes do cmmGnSetServoOn(i, cmTRUE); end;